import {
  queryProductDetailedInfo
} from "../../service/product"

import {
  queryIsFavoriteProduct,
  addProductToCollection,
  removeProductFavorite
} from "../../service/collection"
import {
  downloadFile
} from "../../utils/wxUtil"
import Decimal from 'decimal.js';

import {
  batchAddShippingCart,
  queryShippingCartCount
} from "../../service/shipping-cart"
import {
  queryOrderPrepareInfo
} from "../../service/order"
const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 商品ID
    productId: null,
    // 商品轮播图
    productCarouselImages: [],
    // 商品详情图
    productDetailedImages: [],
    // 商品价格
    discountPrice: 0.00,
    //  商品划线价格
    originalPrice: 0.00,
    // 商品促销价格
    promotionalPrice: 0.00,
    // 商品状态
    productStatus: 0.00,
    // 商品类型
    productType: 0,
    // 商品名称
    productName: null,
    // 商品作用提示
    productTip: null,
    // 商品生产日期
    manufacturingDate: null,
    // 商品有效期至
    expiryDate: null,
    // 医保编码
    medicalInsuranceCode: null,
    // 注册证件号
    registrationNumber: null,
    // 注册证件照
    registrationIdPhoto: null,
    // 商品品牌ID
    brandId: null,
    // 商品品牌名称
    brandName: null,
    // 商品规格列表
    productSpecification: [],
    // 商品包装
    productPackaging: null,
    // 商品生产企业
    manufacturingEnterprise: null,
    // 秒杀开始时间
    seckillStartTime: null,
    // 秒杀结束时间
    seckillEndTime: null,
    // 可用库存
    availableStock: 10,
    // swiper 当前项
    swiperActiveIndex: 0,
    // 是否已收藏当前商品
    isFavorite: false,
    // 是否展示参数
    showParameter: false,
    // 是否展示立即购买
    showPurchase: false,
    // 是否展示加入购物车
    showAddToCart: false,
    // 当前激活的规格索引
    specificationActiveIndex: 0,
    // 已选择的商品数
    numberOfSelectedItems: 0,
    // 总价格
    sumPrice: 0.00,
    // 全部规格OR已选规格
    activeTabIndex: 0,
    // 已选择的全部商品个数
    selectedProductCount: 0,
    // 是否展示服务保障
    showServiceGuarantee: false,
    // 购物车商品数量
    shippingCartCount: 0,
    // 距离秒杀时间剩余时间对象
    countDownTimeData: {}
  },
  /**
   * 点击确定按钮，准备调整订单确认页面
   */
  async onTapConfirmButton() {
    const param = {}
    param.orderPrepareInfoItems = []
    const productId = this.data.productId
    const productSpecification = this.data.productSpecification
    productSpecification.forEach(item => {
      if (item.quantity || item.quantity > 0) {
        param.orderPrepareInfoItems.push({
          productId: productId,
          productSpecificationId: item.productSpecificationId,
          quantity: item.quantity
        })
      }
    })
    if (param.orderPrepareInfoItems.length === 0) {
      wx.showToast({
        title: '请最少选择一件商品！',
        icon: "none"
      })
      return
    }
    const res = await queryOrderPrepareInfo(param)
    app.globalData.orderInfo = res.data
    wx.navigateTo({
      url: '/pages/OrderConfirmation/OrderConfirmation',
    })
  },
  /**
   * 点击添加商品到购物车
   */
  async onTapAddProductToShippingCart() {
    const param = {}
    param.productId = this.data.productId
    param.shippingCartDtoList = []
    const productSpecification = this.data.productSpecification
    productSpecification.forEach(item => {
      if (item.quantity || item.quantity > 0) {
        param.shippingCartDtoList.push({
          productSpecificationId: item.productSpecificationId,
          quantity: item.quantity
        })
      }
    })
    if (param.shippingCartDtoList.length === 0) {
      wx.showToast({
        title: '请最少选择一件商品！',
        icon: "none"
      })
      return
    }
    console.log(param);
    const res = await batchAddShippingCart(param)
    console.log(res);
    wx.showToast({
      title: '成功添加商品到购物车！',
      icon: "none"
    })
    this.onClosePopUp()
    productSpecification.forEach(item => item.quantity = 0)
    this.setData({
      productSpecification: productSpecification
    })
    const self = this
    queryShippingCartCount().then((res) => {
      self.setData({
        shippingCartCount: res.data
      })
    })

  },
  /**
   * 计时器时间发生改变e
   */
  onChangeCountDownTime(e) {
    this.setData({
      countDownTimeData: e.detail,
    });
  },
  /**
   * 点击展示服务保障
   */
  onTapShowRulesButton() {
    this.setData({
      showServiceGuarantee: true
    })
  },

  /**
   *  处理stepper变化
   */
  handleStepperChange(event) {
    const specificationId = event.currentTarget.dataset.specificationId
    const value = event.detail.value
    const {
      productSpecification
    } = this.data
    const index = productSpecification.findIndex(
      item => item.productSpecificationId === specificationId
    )
    if (index !== -1) {
      this.setData({
        [`productSpecification[${index}].quantity`]: value
      }, () => this.calcPriceAndCount())
    }
  },
  /**
   * 计算已购买商品的数量以及商品总价
   */
  calcPriceAndCount() {
    let price = new Decimal('0.0'); // 初始总价
    let count = 0; // 初始数量
    const specList = this.data.productSpecification; // 规格列表（语义化命名）
    if (this.data.productType === 0) {
      for (let i = 0; i < specList.length; i++) { // 循环数组长度
        const spec = specList[i];
        // 确保quantity是数字且大于0（兜底处理）
        const quantity = spec.quantity || 0;
        if (quantity > 0) {
          count += quantity; // 累加数量
          // 重新赋值price（Decimal不可变，必须接收返回值）
          price = price.add(
            new Decimal(spec.productSpecificationDiscountPrice || 0).times(quantity)
          );
        }
      }
    }else{
      for (let i = 0; i < specList.length; i++) { // 循环数组长度
        const spec = specList[i];
        // 确保quantity是数字且大于0（兜底处理）
        const quantity = spec.quantity || 0;
        if (quantity > 0) {
          count += quantity; // 累加数量
          // 重新赋值price（Decimal不可变，必须接收返回值）
          price = price.add(
            new Decimal(spec.productSpecificationPromotionalPrice || 0).times(quantity)
          );
        }
      }
    }
    this.setData({
      selectedProductCount: count,
      sumPrice: price.toFixed(2)
    });
  },
  /**
   * 点击预览规格图片
   */
  onTapPreviewProductSpecificationImage(event) {
    const imageUrl = event.currentTarget.dataset.imageUrl
    wx.previewImage({
      current: imageUrl,
      urls: [imageUrl]
    });

  },

  /**
   * 点击选择具体的规格项
   */
  onTapSpecification(event) {
    this.setData({
      specificationActiveIndex: event.currentTarget.dataset.index
    })
  },

  // 点击更改全部规格或已选规格
  onTapChargeTab(event) {
    const index = event.currentTarget.dataset.index
    this.setData({
      activeTabIndex: index
    })
  },
  /**
   * 点击打开立即购买页面
   */
  onTapOpenPurchasePopup() {
    this.setData({
      showPurchase: true
    })
  },
  /**
   * 点击打开加入购物车
   */
  onTapOpenAddProductToCart() {
    this.setData({
      showAddToCart: true
    })
  },
  /**
   * 点击查看商品的注册证件照
   */
  async onTapCheckProductRegistrationIdPhoto() {
    let pdf = this.data.registrationIdPhoto
    if (!pdf) {
      wx.showToast({
        title: '暂无注册证件照！',
        icon: "none"
      })
    }
    wx.showLoading({
      title: "加载中",
    });
    try {
      const {
        tempFilePath
      } = await downloadFile({
        url: pdf
      })
      wx.openDocument({
        filePath: tempFilePath, // 下载后的临时文件路径
        fileType: 'pdf', // 指定文件类型（可选）
        showMenu: true, // 显示右上角菜单（支持转发、保存等）
        success() {},
        fail(err) {
          console.error(err);
        }
      });
    } catch (err) {
      console.error(err);
      wx.showToast({
        title: '文件打开失败',
        icon: "error"
      })
    } finally {
      wx.hideLoading()
    }

  },
  /**
   * 关闭PopUp
   */
  onClosePopUp() {
    this.setData({
      showParameter: false,
      showPurchase: false,
      showAddToCart: false,
      showServiceGuarantee: false
    })
  },
  /**
   * 点击展示参数
   */
  onTapShowParamerButton() {
    this.setData({
      showParameter: true
    })
  },
  /**
   * 点击前往品牌详情页面
   */
  onTapNavigateToBrandPage() {
    const brandId = this.data.brandId
    wx.navigateTo({
      url: `/pages/BrandDetail/BrandDetail?brandId=${brandId}`,
    })
  },
  /**
   * 点击前往购物车页面
   */
  onTapNavigateToShippingCartPage() {
    wx.switchTab({
      url: '/pages/ShippingCart/ShippingCart',
    })
  },
  /**
   * 点击预览详情图
   */
  onTapPreviewDetailImages(event) {
    wx.previewImage({
      current: event.currentTarget.dataset.imageUrl,
      urls: this.data.productDetailedImages
    });
  },
  /**
   * 点击预览轮播图
   */
  onTapPreviewCarouselImages(event) {
    wx.previewImage({
      current: event.currentTarget.dataset.imageUrl,
      urls: this.data.productCarouselImages
    });
  },
  /**
   * 点击立即抢购按钮
   */
  onTapSnapUpButton() {
    this.setData({
      showPurchase: true
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad(options) {
    const productId = options.productId
    const self = this
    const res = await queryProductDetailedInfo(productId)
    this.setData({
      ...res.data
    })
    // 如果用户已登录，判断用户是否已经收藏商品
    if (app.globalData.isLogin = true) {
      queryIsFavoriteProduct(productId).then((res) => {
        self.setData({
          isFavorite: res.data
        })
      })
      queryShippingCartCount().then((res) => {
        self.setData({
          shippingCartCount: res.data
        })
      })
    }
    /**
     * 如果只有一种规格的话，需要设置规格默认选择数量为1
     */
    if (this.data.productSpecification.length === 1) {
      this.setData({
        'productSpecification[0].quantity': 1
      });
      this.calcPriceAndCount()
    }
    const flag = options.showShippingCart;
    if (flag) {
      setTimeout(() => {
        self.setData({
          showAddToCart: true
        });
      }, 100);
    }
    console.log(this.data);
  },
  /**
   * 点击取消商品收藏
   */
  async onTapRemoveProductFavorite() {
    removeProductFavorite(this.data.productId)
    this.setData({
      isFavorite: false
    })
    wx.showToast({
      title: '取消收藏成功',
      icon: "none"
    })
  },
  /**
   * 点击添加商品到收藏
   */
  async onTapAddProductToCollection() {
    await addProductToCollection(this.data.productId)
    this.setData({
      isFavorite: true
    })
    wx.showToast({
      title: '收藏成功',
      icon: "none"
    })
  },
  /**
   *  swiper轮播事件
   */
  onSwiperChange(event) {
    this.setData({
      swiperActiveIndex: event.detail.current
    })
  }

})